import { initMixin } from './init'
import { stateMixin } from './state'
import { renderMixin } from './render'
import { eventsMixin } from './events'
import { lifecycleMixin } from './lifecycle'
import { warn } from '../util/index'

function Vue (options) {
  if (process.env.NODE_ENV !== 'production' &&
    !(this instanceof Vue)
  ) {
    warn('Vue is a constructor and should be called with the `new` keyword')
  }
  this._init(options)
}
// 一下函数都是初始化Vue原型上的方法和属性
// 初始化_mount
initMixin(Vue)
// 初始化关于数据的属性和方法$data，$porps，$watch
stateMixin(Vue)
// 初始化关于事件的方法$on,$once，$off，$emit
eventsMixin(Vue)
// 初始化关于生命周期的方法_update，$forceUpdate，$destroy
lifecycleMixin(Vue)
// 初始化关于渲染的方法，$nextTick，_render
renderMixin(Vue)

export default Vue
